/*
 * 标准集装箱箱号由11位编码组成，包括三个部分：
1、 第一部分由4位英文字母组成。前三位代码 (Owner Code) 主要说明箱主、经营人，第四位代码说明集装箱的类型。列如CBHU 开头的标准集装箱是表明箱主和经营人为中远集运。
2、 第二部分由6位数字组成。是箱体注册码（Registration Code），用于一个集装箱箱体持有的唯一标识。
3、 第三部分为校验码（Check Digit）由前4位字母和6位数字经过校验规则运算得到，用于识别在校验时是否发生错误。即第11位数字。
根据校验规则箱号的每个字母和数字都有一个运算的对应值。箱号的前10位字母和数字的对应值从0到Z对应数值为0到38，11、22、33不能对11取模数，所以要除去
第N位的箱号对应值再分别乘以2的N－1次方 （N=1，2，3………..10）
例如：箱号为CBHU3202732的集装箱它的第1位代码为C，
它的代码值=代码的对应值×2的0次方 =13×1=13。
类推第2位代码为B
它的代码值=代码的对应值×2的1次方 =12×2=24
以此类推得到箱号前10位代码的代码值。
将前10位的代码值乘积累加后对11取模
箱号为CBHU3202732的集装箱前10位箱号的代码累加值=4061，取11的模后为2，就是这个箱号第11位的识别码的数值。
公式
校验码S=∑Ci*2
以此类推，就能得到校验码。
 * */
function checkBox(box_no){
	var box_int=0,end_int=0,sum=0;
	var result=false;	
	box_no=box_no==null?"":box_no.replace(/^\s+|\s+$/g,"");
	
	try{
		if(box_no.length==11){
			
			end_int=((box_no.charAt(10)).toUpperCase().charCodeAt())-48;
			if(end_int<0 || end_int>9){
				return false;
			}
			for(var i=0;i<10;i++){
				box_int=(box_no.charAt(i)).toUpperCase().charCodeAt();
				if(box_int>=48 && box_int <=57){
					box_int=box_int-48;
				}else if(box_int>=65 && box_int<=90){
					box_int=box_int-55;
					box_int=box_int+parseInt((box_int+parseInt(box_int/11))/11);
				}else{
					return false;
				}
				sum+=box_int*Math.pow(2,i);
			}					
			
			if(end_int!=(sum%11)%10){
				result = false;
			}else{
				result = true;
			}
			
		}else{
			
			result = false;
		}
	}catch(e){
		
	}
	return result;
}